// 入口文件
import Vue from 'vue'

import VueRouter from 'vue-router'
Vue.use(VueRouter)

// 导入vuex组件
import Vuex from 'vuex'
Vue.use(Vuex)
// 如果本地存储中有之前加入到购物车的数据，程序一刷新就从本地存储中拿出car的数据
var car = JSON.parse(localStorage.getItem('car') || '[]')
var store = new Vuex.Store({
    // 调用:this.$store.stata.***   
    state:{
        // 将goodsinfor中的数据保存在这里
        car: car,
    },
    // 调用:this.$store.commit('方法名', '按需传入的唯一参数')
    mutations: {
        // 创建一个方法在调用goodsinfo中的toshopcar()方法时调用这里的mutation并将里面的goodsinfor对象传入到这里
        
        addtocar(state,goodsinfor){
          
          
            var flag = false
            state.car.some(item=>{
                if(item.id == goodsinfor.id){
                    item.count += parseInt(goodsinfor.count)
                    flag = true
                    return true
                }
            });
            // 最终循环完毕，将goodsinfor中的数据push到car中
            if(!flag){
                state.car.push(goodsinfor)
            }

 // 由于页面更新后之前加在购物车中的数据会清零，为了让页面更新后购物车中仍然有数据所以要将car的数据保存在内存（localstorage）中
            localStorage.setItem('car',JSON.stringify(state.car))

        },
        updateshopcar(state,goodsinfo){
            state.car.some(item=>{
                if(item.id == goodsinfo.id){
                    item.count =parseInt(goodsinfo.count)
                    return true
                }
                

            })
            localStorage.setItem('car',JSON.stringify(state.car))

        },
        removeinfo(state,id){
            state.car.some((item,i)=>{
                if(item.id == id){
                    state.car.splice(i,1)
                    return true 
                }

               // return true不准放这里  因为id不匹配会立即执行此行代码终止整个循环。
            })
            localStorage.setItem('car',JSON.stringify(state.car))
        },
        updateselected(state,info){
            state.car.some(item=>{
                if(item.id == info.id){
                    item.selected = info.selected
                    return true
                }
            })
            localStorage.setItem('car',JSON.stringify(state.car))
        }
    },
    // 调用:this.$store.getters.***
    getters: {
        getAllcount(state){
            var c = 0
            state.car.forEach(item=>{
                c += item.count
            })
            return c
        },

        getgoodscount(state){
            var o = {}
            state.car.forEach(item=>{
                o[item.id] = item.count

            })
            return o
        },
        getgoodsselect(state){
            
            var c = {}
            state.car.forEach(item=>{
                c[item.id] = item.selected
            })
            return c
        },
        getdata(state){
            console.log("调用了geeter")
            var o = {
                count:0,
                ammount:0,
            }

            state.car.forEach(item=>{
                
                if(item.selected){
                    o.count += item.count
                    o.ammount += item.price * item.count
                    console.log(o.count)
                    console.log(o.ammount)
                }
            })
            return o
        }

        
    },
})





//按需导入mint-ui
// import { Header,Swipe, SwipeItem,Button,Lazyload } from 'mint-ui';
// Vue.component(Header.name, Header);
// Vue.component(Swipe.name, Swipe);
// Vue.component(SwipeItem.name, SwipeItem);
// Vue.component(Button.name, Button);
// Vue.use(Lazyload);
import MintUI from 'mint-ui'
import 'mint-ui/lib/style.css'
Vue.use(MintUI)
import './lib/mui/css/mui.min.css'
// 安装图片预览插件
import VuePreview from 'vue-preview'
Vue.use(VuePreview)


// 导入自己的router.js路由
import router from './router.js'
// 导入格式化时间插件
import moment from 'moment'
// 定义全局过滤器
Vue.filter('dateFormat',function(datastr,pattern="YYYY-MM-DD HH:MM:SS"){
   return moment(datastr).format(pattern)
})

// 引入vue-resource
import VueResource from 'vue-resource'
// 安装
Vue.use(VueResource  )
// 配置全局根路径
Vue.http.options.root = 'http://www.liulongbin.top:3005';
//设置post表单格式数据
Vue.http.options.emulateJSON=true;


// 导入APP文件
import app from './App.vue'

// 创建vm实例
var vm = new Vue ({
    el: '#app',
    render: c => c(app) ,
    router,
    store,
    
})